home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1997 February
/
EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso
/
progs
/
sviluppo
/
pike-0.4.0
/
lib
/
include
/
stack.pre.pike
< prev
next >
Wrap
Text File
|
1997-01-10
|
552b
|
35 lines
#define error(X) throw( ({ (X), backtrace()[0..sizeof(backtrace())-2] }) )
class stack {
int ptr;
mixed *arr=allocate(32);
void push(mixed val)
{
if(ptr==sizeof(arr)) arr+=allocate(ptr);
arr[ptr++]=val;
}
mixed pop(mixed val)
{
mixed foo;
if(--ptr < 0)
error("Stack underflow\n");
foo=arr[ptr];
arr[ptr]=0; /* Don't waste references */
return foo;
}
void reset()
{
arr=allocate(32);
ptr=0;
}
};
void create()
{
master()->add_precompiled_program("/precompiled/stack",stack);
}